/*
 * Magic! Don't Touch
 */
package módulo9;

import java.io.BufferedReader;
import java.io.FileReader;

/**
 *
 * @author Nícolas Riccieri Gardin Assumpção    Ra: 121245
 */
public class LeitorIntegralizacao {

    
    public static Integralizacao Leitura(String arquivo) throws Exception {
        //Buffer de leitura do arquivo
        BufferedReader in = new BufferedReader(new FileReader(arquivo));
        
        //variavel de retorno
        Integralizacao retorno = new Integralizacao();
        
        //variaveis do metodo
        int curso;
        String ra,str="";
        
        
        //Procura o RA
        while (in.ready() && !str.contains("REGISTRO ACADEMICO:")) {
            //leitura da linha
            str = in.readLine();
        }
        //encontrou o RA
        if(str.contains("REGISTRO ACADEMICO:")){
            ra = str.substring(57, 63);
            retorno.setRaAluno(ra);
        }
        else{throw new Exception();}//ERRO
        
        
        //Procura curso
        while (in.ready() && !str.contains("  CURSO:")) {
            //leitura da linha
            str = in.readLine();
        }
        //encontrou curso na integralizacao
        if(str.contains("  CURSO:")){
            curso = Integer.parseInt(str.substring(10, 13).replace(" ", ""));
            retorno.setCodigoCurso(curso);
        }
        else{throw new Exception();}//ERRO
        
        //Procura inicio das disciplinas
        while (in.ready() && str.compareTo("  HISTORICO ATUAL:")!=0) {
            //leitura da linha
            str = in.readLine();
        }
        //inicia leitura das disciplinas
        if(str.compareTo("  HISTORICO ATUAL:")==0){
            str = in.readLine();
            //LEITURA DAS DISCIPLINAS
            while (in.ready() && str.length()>=37) {
                //PRIMEIRA COLUNA
                ProcessamentoLinha(str.substring(0,37),retorno);
                if(str.length()>40){//se houver segunda coluna
                    //SEGUNDA COLUNA
                    ProcessamentoLinha(str.substring(40,77),retorno);
                }
                str = in.readLine();
            }
        }
        else{throw new Exception();}//ERRO
        
        in.close();
        return retorno;
    }
    
    public static void ProcessamentoLinha(String str, Integralizacao integ){
        int creditos,cargaHoraria,codigoAprovacao;
        String materia, turma,periodo;
        char aproveitamento,categoria;
        double nota;
        
        materia = str.substring(2,7);
        turma = str.substring(8,11);
        creditos = Integer.parseInt(str.substring(12,14));
        aproveitamento = str.charAt(15);
        categoria = str.charAt(17);
        if((str.substring(19,23)).compareTo(" ---")==0){  //caso nao tenha nota coloca -1
            nota = -1.0;
        }
        else{
            nota = Double.parseDouble(str.substring(19,23).replaceAll(" ", "").replaceAll(",", "."));
        }
        cargaHoraria = Integer.parseInt(str.substring(24,27).replaceAll(" ", ""));
        codigoAprovacao = Integer.parseInt(str.substring(28,30).replaceAll(" ", ""));
        periodo = str.substring(31,37);
        
        //Inclui nova disciplina
        integ.novaDisciplina(str.substring(2,37),materia, turma, creditos, aproveitamento, categoria, nota, cargaHoraria, codigoAprovacao, periodo);
    }
}